using Eureka.objetos;
using System.Data;
using System;
namespace Eureka.modelos
{
    public class Jogador
    {
        private int id;
        private string login;
        private string senha;
        private string nome;
        private int[] pontuacao;
        private int numeroPartidas;

        #region encapsulated fields (set/get methods)

        public int Id
        {
            get { return id; }
            set { id = value; }
        }

        public string Login
        {
            get { return login; }
            set { login = value; }
        }

        public string Senha
        {
            get { return senha; }
            set { senha = value; }
        }

        public string Nome
        {
            get { return nome; }
            set { nome = value; }
        }
        
        public int[] Pontuacao
        {
            get { return pontuacao; }
            set { pontuacao = value; }
        }

        public int NumeroPartidas
        {
            get { return numeroPartidas; }
            set { numeroPartidas = value; }
        }

        #endregion

        public Jogador(string nome, string login, string senha)
        {
            this.nome = nome;
            this.login = login;
            this.senha = senha;
            this.pontuacao = new int[3];
        }

        public Jogador() { }

        public Jogador(int id) 
        {
            this.id = id;
        }


        public void criar()
        {
            JogadorDAO.criar(this.nome, this.login, this.senha);
        }

        public void atualizar()
        {
            JogadorDAO.atualizar(this.id, this.senha, this.nome, this.pontuacao, this.numeroPartidas);
        }

        public void apagar()
        {
            JogadorDAO.apagar(this.id);
        }

        #region static methods

        static public DataSet buscarDataSet(string login)
        {
            return JogadorDAO.buscar(login);
        }

        static public DataSet buscarDataSet()
        {
            return JogadorDAO.buscar(null);
        }

        static public Jogador buscar(string login)
        {
            DataTable dtc = JogadorDAO.buscar(login).Tables[0];
            DataRow row;
            if (dtc.Rows.Count == 0) return null;
            else row = dtc.Rows[0];
            Jogador jogador = new Jogador(row["nome"].ToString(), row["login"].ToString(), row["senha"].ToString());
            jogador.pontuacao[0] = (int)row["maiorPontuacaoFacil"];
            jogador.pontuacao[1] = (int)row["maiorPontuacaoMedio"];
            jogador.pontuacao[2] = (int)row["maiorPontuacaoDificil"];
            jogador.numeroPartidas = (int)row["numeroPartidas"];
            jogador.id = (Int32)row["id"];

            return jogador;
        }

        static public bool autenticar(string login, string password)
        {
            return JogadorDAO.validar(login, password);
        }

        #endregion
    }
}
